As with any manufacturing industry, production testing is very useful in determining the quality and reliability of a product. Discovering faulty integrated circuit (IC) components early in the production stage is very important, because the cost of finding and replacing the bad component dramatically increases with each level of integration. For example, the cost of replacing a faulty IC is less than replacing a printed circuit board using the faulty IC, which is less expensive than replacing an entire computer system that incorporates the faulty IC.
Unfortunately in the semiconductor industry, accurate production testing of all the components included on an integrated circuit (IC) is very difficult. The basic principle behind production testing is to provide the stimulus to activate and to propagate faults in the circuit being tested. A successful production test should be able to apply, test, measure, and compare the circuit responses with a set of expected responses to determine whether the circuit is functioning properly. Exemplary types of testing include exhaustive testing and functional testing. Exhaustive testing provides every possible combination of stimulus, for example an electronic device with 16 input ports and no internal memory would have 216 or 65,536 test vectors. In contrast to exhaustive testing, a functional test uses fewer test vectors, but requires designer expertise to determine which vectors will still provide exhaustive testing of the circuit.
Regardless of which type of stimulus is used, the testing device must be able to capture the relevant outputs. Traditionally, the testing device is programmed to start comparing observed data signal values with expected signal values after a defined latency period associated with the electronic device being tested. Predicting when valid output data will be available relative to when the test vector was applied to the device being tested is not always possible, especially in electronic devices that use multiple clock domains, such as chipsets and network switches. This presents a substantial logistical obstacle during production testing of these electronic devices, since standard testing devices require outputs to be available after a specified number of cycles. To compensate, some testing devices employ a lockstep loop test method. Unfortunately, this method is an impractical approach when there are also multiple data channels on the electronic device being tested.
For example, when a test data packet is sent in functional testing mode through a network switch starting on clock cycle 0, the resulting data packet may not arrive on the data output path until several cycles later (e.g., clock cycles 10, 11, or 12). The exact timing surrounding when the data packet arrives depends on a variety of factors including how the multiple clock domains within the network switch interact during a particular test run. As a result, the same electronic device may produce valid outputs after a variety of clock cycles (10, 11, or 12), even though the test conditions are similar. These signals exhibiting an uncertain response time will be called asynchronous data signals for the purpose of this document.
Furthermore, the lockstep loop method and other similar testing methods often alter or freeze the overall timing of the electronic device so that the signals can be read externally. Unfortunately, production tests which are applied at slow clock speeds miss many defects that only appear as speed-sensitive defects. Speed-sensitive defects are costly, because the electronic device appears to function properly at very slow clock speeds, but fails at the designed operating speed. The result is that the electronic device, such as a chipset or network switch, may initially pass a slow test during production testing only to fail when operating at speed after being installed in a product. As previously discussed, the economic cost of replacing a defective installed electronic device far exceeds the actual cost of component replacement.